草庐IT

c++ - 纯虚拟 friend 类

全部标签

C - Windows 和 Unix 上的可移植代码

我正在创建一个程序,我希望它在Windows和UNIX上运行。然而,我使用了很多特定于Windows或Unix的函数。例如位于#include中的函数和#include对于UNIX和#include和#include适用于Windows。我让它们独立工作,但我想将它们合并在一起。这是一个例子:structtimespecstart,end;//UNIXcodeLARGE_INTEGERclockFrequency;//WindowscodeQueryPerformanceFrequency(&clockFrequency);LARGE_INTEGERstartTime;LARGE_IN

c - 读取未格式化的数据

在C中,使用标准WindowsAPI,读取未格式化磁盘的最佳方法是什么?具体来说,我有一个MMC或SDcard有数据,但没有文件系统(不是FAT16,不是FAT32,只是原始数据)。如果有一种简单的方法可以打开整个卡进行逐字节二进制访问,那就太好了。谢谢! 最佳答案 我会去HANDLEdrive=CreateFile(_T("\\.\PhysicalDrive0"),GENERIC_READ,FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0);//errorhandlingDWORDbr=0;DISK_GEO

c - 确定进程是否已死 - 通过 PID

我有两种不同的方法来检查进程是否仍在运行:1)使用GetExitCodeProcess()2)使用CreateToolhelp32Snapshot()遍历进程列表并检查PID现在,在这两种情况下,我仍然知道我用TerminateProcess终止的进程仍然存在,即使它不是。有没有办法通过PID明确知道进程是活着还是死了?谢谢! 最佳答案 不要将PID用于这样的事情。PID被重复使用并且具有非常的范围,具有非常高的冲突概率。换句话说,您会发现一个正在运行的进程,但它是一个不同进程。 关于c

c - 如何从 C 程序调用可执行文件(使用 winapi)?

CreateProcess()出现了几次搜索谷歌....可以假设这是最安全、最有效的方法吗?如果是这样,我想使用被调用进程的输出。在继续C程序之前,我如何知道它已经完成?谢谢。 最佳答案 ShellExecute可用于创建进程,它是一种更方便的传递参数的方式。但如果您想使用流程的输出,那么CreateProcess可能是您最好的选择使用CreateProcess,您可以传递STARTUPINFO可用于将文件管道句柄传递给进程外的标准结构。CreateProcess将返回PROCESS_INFORMATION包含已创建进程的HANDL

c - 将 User32 与 gcc 链接起来

我有一个C程序,它有一个在windows.h中定义的函数调用(我已经包含了),但是,当我尝试用gcc编译它时>,我得到错误:warning:implicitdeclarationoffunction`LockWorkStation'我查看了MSDN文档,发现此函数是User32库文件,我想知道如何将它链接到我的文件。 最佳答案 LockWorkstation可在Windows2000及更高版本上使用。您必须声明您的目标Windows版本。让它看起来像这样:#define_WIN32_WINNT0x500#include

c++ - 如何在 Windows 上用 C 或 C++ 发送 IM

具体来说,我说的是使用AIM并将即时消息发送到现有的AIM屏幕名称。我将如何做到这一点?我正在尝试尽可能以最简单的方式进行操作-效率并不那么重要。我想也许我所要做的就是打开一个套接字连接,但我可能错了。 最佳答案 我会使用libpurple.它是一个多平台C库,支持许多IM服务,包括AIM。 关于c++-如何在Windows上用C或C++发送IM,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/que

c - Windows中进程的最短保证时间是多少?

我有一个进程为硬件(数据传输设备)提供特定的缓冲区大小。我可以从Windows调度程序窗口合理地期望什么来确保我没有缓冲区下溢?我的缓冲区大小为32K,每秒消耗约800k字节。如果我以16k字节的批处理填充它,那就是每20毫秒一个批处理。但是,我填充它的下限是多少。如果说,我在我的填充循环中调用sleep(0),我合理的最坏情况调度间隔是多少?操作系统=WindowsXPSP3双核2.2Ghz请注意,我正在进行API调用以检查缓冲区填充水平,并调用驱动程序API以将数据传递给它。我假设这些是Windows除了sleep(0)之外还可以使用的调度点。我想(作为一个过程)表现得很好并且仍然

c++ - 在 Windows 上,我们如何将虚拟键码转换为移位字符?

我查看了MapVirtualKey()和ToAscii()。MapVirtualKey()只给我未移位的字符。ToAscii()仅适用于转换为ASCII值的vk代码。例如,我需要将“Ctrl+Shift+3”检测为Ctrl事件、Shift事件和“#”。有什么线索吗? 最佳答案 这就是我最终做到的:caseWM_KEYDOWN:GetKeyboardState(kbs);if(kbs[VK_CONTROL]&0x00000080){kbs[VK_CONTROL]&=0x0000007f;::ToAscii(p_wParam,::Map

c - 如何使用 C 从 Windows 中的文件句柄获取文件名?

我正在尝试从给定的文件句柄中检索文件名。我看过GetFileInformationByHandle可能有用,但它返回的结构不包含任何文件名信息(http://msdn.microsoft.com/en-us/library/aa363788%28v=VS.85%29.aspx)。我该怎么做?编辑:我已尝试安装WindowsFileIDAPI以使GetFileInformationByHandleEx在WindowsXP上运行。但是当包含fileextd.h时,出现以下错误c:\programmi\microsoftvisualstudio9.0\vc\include\fileextd.

c++ - 单个文件上两个 C FILE* 流的一致性

我需要为来自网络套接字的大量数据实现一个简单的“溢出到磁盘”层。我希望有两个CFILE*流,一个由写入文件的后台线程使用,一个由读取文件的前端线程使用。这两个流是这样的,一个线程可以在一个偏移处写入,而另一个线程可以在其他位置读取-无需锁定并阻塞另一个线程。将有一个分页机制,因此读/写是在随机访问位置-不一定是顺序的。还有一个警告,这需要在Windows和Linux上运行。问题:在对第一个流的fwrite返回后,写入的数据是否保证对第二个流上的fread立即可见?如果没有,我还可以考虑其他哪些选择?Posixpread/pwrite函数原来是我所需要的。这是Win32的版本:size_